Matlab模拟电偶极子场强分布 |
您所在的位置:网站首页 › 电偶极子 电场 › Matlab模拟电偶极子场强分布 |
项目场景:
本文主要利用matlab 编程计算电偶极子电势和电场强度的大小和方向,并绘制图像进行可视化,最后介绍matlab梯度函数的运算原理。
电偶极子电场线与电势分布:
A.二维平面图(一)
绘制电势分布用到contour()函数;求解梯度用到gradient()函数绘制电场线用到streamline()函数;
clear
q=1;
xm=2.5;
ym=2;
x=linspace(-xm,xm);
y=linspace(-ym,ym);
[X,Y]=meshgrid(x,y);
r1=sqrt((X+1).^2+Y.^2);
r2=sqrt((X-1).^2+Y.^2);
%构造电势表达式
Phi=-q./r1+q./r2;
u=-4:0.5:4;
figure
%此处运用contour()函数绘制等高线,'--'代表绘制虚线,默认为实线
contour(X,Y,Phi,u,'--');
%此处运用contourf()函数绘制等高面,可以取消注释查看
%contourf(X,Y,Phi,u);
hold on
%此处用于标记正负电荷
plot(-1,0,'o', 'MarkerSize',12);
plot(1,0,'o', 'MarkerSize',12);
text(-1.02,0,'-','FontSize',10);
text(0.98,0,'+','FontSize',10);
%此处运用梯度函数进行求解场强EX,EY分量,并指定间距,起到放大同样倍数的效果
[EX1,EY1]=gradient(-Phi,x(1),y(1));
%此处构造stratline函数的起点
dth1=20;
th1=(dth1:dth1:180-dth1)*pi/180;
r0=0.1;
%构造左侧电场线起点x1,y1
x1=r0*cos(th1)-1;
y1=r0*sin(th1);
%此处运用streamline函数进行电场线绘制
streamline(X,Y,EX1,EY1,x1,y1);
streamline(X,-Y,EX1,-EY1,x1,-y1);
hold on
%以下代码可以类比上面代码
[EX2,EY2]=gradient(-Phi,x(100),y(100));
dth2=20;
th2=(180-dth2:-dth2:dth2)*pi/180;
x2=r0*cos(th2)+1;
y2=r0*sin(th2);
streamline(X,Y,EX2,EY2,x2,y2);
streamline(X,-Y,EX2,-EY2,x2,-y2);
axis equal tight
title('电偶极子场强和电势分布图')
xlabel('\itx');
ylabel('\ity');
B.二维平面图(二)
绘制电场线分布用到streamline()函数;
clear
[X,Y] = meshgrid(-4:0.02:4);
R1=sqrt((X+1).^2+Y.^2);
R2=sqrt((X-1).^2+Y.^2);
Phi = 1./R1+1./R2;
[EX,EY]=gradient(-Phi);
hold on;
R0=0.1;
th = 20:20:360 - 20;
th = th*pi/180;
xm = -1+R0*cos(th);
ym = R0*sin(th);
h = streamline(X,Y,EX,EY,xm,ym);
xn = -xm;
yn = ym;
h = streamline(X,Y,EX,EY,xn,yn);
axis image
C.二维等势面
绘制电场线分布用到contourf()函数;
clear
a=2;
[X,Y]=meshgrid(linspace(-5,5,500));
R1=sqrt((X-a).^2+Y.^2);
R2=sqrt((X+a).^2+Y.^2);
Phi=1./R1-1./R2;
s=linspace(-0.8,0.8,13);
[c,h]=contourf(X,Y,Phi,s);
clabel(c,h);
colormap parula
axis equal
D.三维空间图
绘制电势分布的三维图用到mesh()函数;
clear
q=1;
xm=2.5;
ym=2;
x=linspace(-xm,xm);
y=linspace(-ym,ym);
[X,Y]=meshgrid(x,y);
r1=sqrt((X+1).^2+Y.^2);
r2=sqrt((X-1).^2+Y.^2);
Phi=-q./r1+q./r2;
%此处运用mesh函数绘制Phi,X,Y三维图,其实是二维图的三维形式
mesh(X,Y,Phi)
hold on
xlabel('\itx');
ylabel('\ity');
zlabel('\itz');
A.梯度函数gradient():
梯度函数gradient具体解释gradient(F)返回F(一维标量)的差分计算结果,默认间距为1gradient(F,h)返回F(一维标量)的差分计算结果,指定间距为hgradient(F,hx,hy,…,hN)返回F(n维矢量)的差分计算结果,指定间距为hx,hy,…,hN
算法原理
gradient(F)计算F(考虑F为二维矩阵(M,N))的梯度分为两部分 第一部分:二维矩阵的第一列和最后一列(单侧差分) 计算公式为:G(:,1) = F(:,2) - F(:,1);G(:,N) = F(:,N) - F(:,N-1); 即为第二列的数值-第一列的数值;最后一列的数值-倒数第二列的数值 第二部分:二维矩阵的中间所有列(中心差分) 计算公式为:G(:,j)=1/2*(F(:,j+1) - F(:,j-1)), 即为第j列的梯度=1/2*[第(j+1)列的数值-第(j-1)列的数值 代码如下(示例): a = 1 5 9 2 5 8 3 5 1 [dx,dy]=gradient(a) dx = 4 4 4 3 3 3 2 -1 -4 dy = 1 0 -1 1 0 -4 1 0 -7 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |